
#include <iostream>
#include<iomanip>

#include "Astar.h"
using namespace std;

void print(vector<vector<int>> &maze)
{
	for (auto &mm : maze){
		//std:: cout << p << std::endl;
		for (auto &n : mm){
			if(n==0 ){
		   		std:: cout  << setfill(' ') << setw(2) << " ";
				continue ;
			}
			
			if(n==1){
		   		std:: cout  << setfill('.') << setw(2) << " ";
				continue ;
			}
			if(n='#'){
				std:: cout  << setfill(' ') << setw(2) << "#" ;
			}
		}
		std::cout << std::endl;
	}
}
 
int main()
{
	//初始化地图，用二维矩阵代表地图，1表示障碍物，0表示可通
	vector<vector<int>> maze = {
		{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },  // 0
		{ 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1 },
		{ 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1 },  // 2
		{ 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1 },
		{ 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1 },  // 4
		{ 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1 },
		{ 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1 },   // 6
		{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
 	      //  0     2     4     6     8     10
	};
	Astar astar;
	astar.InitAstar(maze);
 
	//设置起始和结束点
	Point start(1, 1);
	//Point end(6, 10);
	//Point end(1, 10);
	Point end(4, 10);
	//A*算法找寻路径
	list<Point *> path = astar.GetPath(start, end, false);
	//打印
	for (auto &p : path){
		//cout << '(' << p->x << ',' << p->y << ')' << endl;
		maze[p->x][p->y] ='#';
	}

	print(maze);
	return 0;
}
